<!doctype html>
<html lang="zh-CN">
<head>
  <base href="https://www.nodeapp.cn/path.html" />
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>路径（Path） | Node.js 中文文档 | Node.js 中文网</title>
  <meta name="description" content="Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型，使其轻量又高效。Node.js 的包管理器 npm，是全球最大的开源库生态系统。">
  <link rel="stylesheet" href="assets/style.css">
  <link rel="stylesheet" href="assets/sh.css">
  <link rel="canonical" href="https://www.nodeapp.cn/path.html">
  <link rel="apple-touch-icon" href="apple-touch-icon.png">
  <link rel="icon" sizes="32x32" type="image/png" href="favicon.png">
  
  <script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?acdf78480f7f8f2b23b812565a5868e0";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>

</head>
<body class="alt apidoc" id="api-section-path">
  <div id="content" class="clearfix">
    <div id="column1" data-id="path" class="interior">
      <header>
        <h1>Node.js v8.x 中文文档</h1>
        <hr>
      </header>

      <div id="toc">
        <h2>目录</h2>
        <ul>
<li><span class="stability_2"><a href="#path_path">path (路径)</a></span><ul>
<li><span class="stability_undefined"><a href="#path_windows_vs_posix">Windows 与 POSIX</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_basename_path_ext">path.basename(path[, ext])</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_delimiter">path.delimiter</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_dirname_path">path.dirname(path)</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_extname_path">path.extname(path)</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_format_pathobject">path.format(pathObject)</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_isabsolute_path">path.isAbsolute(path)</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_join_paths">path.join([...paths])</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_normalize_path">path.normalize(path)</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_parse_path">path.parse(path)</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_posix">path.posix</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_relative_from_to">path.relative(from, to)</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_resolve_paths">path.resolve([...paths])</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_sep">path.sep</a></span></li>
<li><span class="stability_undefined"><a href="#path_path_win32">path.win32</a></span></li>
</ul>
</li>
</ul>

      </div>
<div id="apicontent">
        <h1>path (路径)<span><a class="mark" href="#path_path" id="path_path">#</a></span></h1>
<!--introduced_in=v0.10.0-->
<div class="api_stability api_stability_2"><a href="documentation.html#documentation_stability_index">稳定性: 2</a> - 稳定的</div><p><code>path</code> 模块提供了一些工具函数，用于处理文件与目录的路径。可以通过以下方式使用：</p>
<pre><code class="lang-js">const path = require(&apos;path&apos;);
</code></pre>
<h2>Windows 与 POSIX<span><a class="mark" href="#path_windows_vs_posix" id="path_windows_vs_posix">#</a></span></h2>
<p><code>path</code> 模块的默认操作会根据 Node.js 应用程序运行的操作系统的不同而变化。
比如，当运行在 Windows 操作系统上时，<code>path</code> 模块会认为使用的是 Windows 风格的路径。</p>
<p>例如，对 Windows 文件路径 <code>C:\temp\myfile.html</code> 使用 <code>path.basename()</code> 函数，运行在 POSIX 上与运行在 Windows 上会产生不同的结果：</p>
<p>在 POSIX 上:</p>
<pre><code class="lang-js">path.basename(&apos;C:\\temp\\myfile.html&apos;);
// 返回: &apos;C:\\temp\\myfile.html&apos;
</code></pre>
<p>在 Windows 上:</p>
<pre><code class="lang-js">path.basename(&apos;C:\\temp\\myfile.html&apos;);
// 返回: &apos;myfile.html&apos;
</code></pre>
<p>要想在任何操作系统上处理 Windows 文件路径时获得一致的结果，可以使用 <a href="#path_path_win32"><code>path.win32</code></a>：</p>
<p>在 POSIX 和 Windows 上:</p>
<pre><code class="lang-js">path.win32.basename(&apos;C:\\temp\\myfile.html&apos;);
// 返回: &apos;myfile.html&apos;
</code></pre>
<p>要想在任何操作系统上处理 POSIX 文件路径时获得一致的结果，可以使用 <a href="#path_path_posix"><code>path.posix</code></a>：</p>
<p>在 POSIX 和 Windows 上:</p>
<pre><code class="lang-js">path.posix.basename(&apos;/tmp/myfile.html&apos;);
// 返回: &apos;myfile.html&apos;
</code></pre>
<p>注意：在 Windows 上 Node.js 遵循单驱动器工作目录的理念。
当使用驱动器路径且不带反斜杠时就能体验到该特征。
例如，<code>fs.readdirSync(&apos;c:\\&apos;)</code> 可能返回与 <code>fs.readdirSync(&apos;c:&apos;)</code> 不同的结果。
详见 <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/aa365247.aspx#fully_qualified_vs._relative_paths">MSDN 路径文档</a>。</p>
<h2>path.basename(path[, ext])<span><a class="mark" href="#path_path_basename_path_ext" id="path_path_basename_path_ext">#</a></span></h2>
<div class="api_metadata">
<details class="changelog"><summary>版本历史</summary>
<table>
<tbody><tr><th>版本</th><th>变更</th></tr>
<tr><td>v6.0.0</td>
<td><p>Passing a non-string as the <code>path</code> argument will throw now.</p>
</td></tr>
<tr><td>v0.1.25</td>
<td><p><span>新增于: v0.1.25</span></p>
</td></tr>
</tbody></table>
</details>
</div><ul>
<li><code>path</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>ext</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a> 可选的文件扩展名</li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p><code>path.basename()</code> 方法返回一个 <code>path</code> 的最后一部分，类似于 Unix 中的 <code>basename</code> 命令。
没有尾部文件分隔符，请查阅<a href="#path_path_sep"><code>path.sep</code></a>。</p>
<p>例子：</p>
<pre><code class="lang-js">path.basename(&apos;/foo/bar/baz/asdf/quux.html&apos;);
// 返回: &apos;quux.html&apos;

path.basename(&apos;/foo/bar/baz/asdf/quux.html&apos;, &apos;.html&apos;);
// 返回: &apos;quux&apos;
</code></pre>
<p>如果 <code>path</code> 不是一个字符串或提供了 <code>ext</code> 但不是一个字符串，则抛出 <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a>。</p>
<h2>path.delimiter<span><a class="mark" href="#path_path_delimiter" id="path_path_delimiter">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.9.3</span>
</div><ul>
<li>
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p>提供平台特定的路径分隔符：</p>
<ul>
<li>Windows 上是 <code>;</code></li>
<li>POSIX 上是 <code>:</code></li>
</ul>
<p>例如，在 POSIX 上：</p>
<pre><code class="lang-js">console.log(process.env.PATH);
// 输出: &apos;/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin&apos;

process.env.PATH.split(path.delimiter);
// 返回: [&apos;/usr/bin&apos;, &apos;/bin&apos;, &apos;/usr/sbin&apos;, &apos;/sbin&apos;, &apos;/usr/local/bin&apos;]
</code></pre>
<p>在 Windows 上：</p>
<pre><code class="lang-js">console.log(process.env.PATH);
// 输出: &apos;C:\Windows\system32;C:\Windows;C:\Program Files\node\&apos;

process.env.PATH.split(path.delimiter);
// 返回: [&apos;C:\\Windows\\system32&apos;, &apos;C:\\Windows&apos;, &apos;C:\\Program Files\\node\\&apos;]
</code></pre>
<h2>path.dirname(path)<span><a class="mark" href="#path_path_dirname_path" id="path_path_dirname_path">#</a></span></h2>
<div class="api_metadata">
<details class="changelog"><summary>版本历史</summary>
<table>
<tbody><tr><th>版本</th><th>变更</th></tr>
<tr><td>v6.0.0</td>
<td><p>Passing a non-string as the <code>path</code> argument will throw now.</p>
</td></tr>
<tr><td>v0.1.16</td>
<td><p><span>新增于: v0.1.16</span></p>
</td></tr>
</tbody></table>
</details>
</div><ul>
<li><code>path</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p><code>path.dirname()</code> 方法返回一个 <code>path</code> 的目录名，类似于 Unix 中的 <code>dirname</code> 命令。
Trailing directory separators are ignored, see <a href="#path_path_sep"><code>path.sep</code></a>.</p>
<p>例子：</p>
<pre><code class="lang-js">path.dirname(&apos;/foo/bar/baz/asdf/quux&apos;);
// 返回: &apos;/foo/bar/baz/asdf&apos;
</code></pre>
<p>如果 <code>path</code> 不是一个字符串，则抛出 <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a>。</p>
<h2>path.extname(path)<span><a class="mark" href="#path_path_extname_path" id="path_path_extname_path">#</a></span></h2>
<div class="api_metadata">
<details class="changelog"><summary>版本历史</summary>
<table>
<tbody><tr><th>版本</th><th>变更</th></tr>
<tr><td>v6.0.0</td>
<td><p>Passing a non-string as the <code>path</code> argument will throw now.</p>
</td></tr>
<tr><td>v0.1.25</td>
<td><p><span>新增于: v0.1.25</span></p>
</td></tr>
</tbody></table>
</details>
</div><ul>
<li><code>path</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p><code>path.extname()</code> 方法返回 <code>path</code> 的扩展名，即从 <code>path</code> 的最后一部分中的最后一个 <code>.</code>（句号）字符到字符串结束。
如果 <code>path</code> 的最后一部分没有 <code>.</code> 或 <code>path</code> 的文件名（见 <code>path.basename()</code>）的第一个字符是 <code>.</code>，则返回一个空字符串。</p>
<p>例子：</p>
<pre><code class="lang-js">path.extname(&apos;index.html&apos;);
// 返回: &apos;.html&apos;

path.extname(&apos;index.coffee.md&apos;);
// 返回: &apos;.md&apos;

path.extname(&apos;index.&apos;);
// 返回: &apos;.&apos;

path.extname(&apos;index&apos;);
// 返回: &apos;&apos;

path.extname(&apos;.index&apos;);
// 返回: &apos;&apos;
</code></pre>
<p>如果 <code>path</code> 不是一个字符串，则抛出 <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a>。</p>
<h2>path.format(pathObject)<span><a class="mark" href="#path_path_format_pathobject" id="path_path_format_pathobject">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.11.15</span>
</div><ul>
<li><code>pathObject</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object" class="type">&lt;Object&gt;</a><ul>
<li><code>dir</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>root</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>base</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>name</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>ext</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
</li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p><code>path.format()</code> 方法会从一个对象返回一个路径字符串。
与 <a href="#path_path_parse_path"><code>path.parse()</code></a> 相反。</p>
<p>当 <code>pathObject</code> 提供的属性有组合时，有些属性的优先级比其他的高：</p>
<ul>
<li>如果提供了 <code>pathObject.dir</code>，则 <code>pathObject.root</code> 会被忽略</li>
<li>如果提供了 <code>pathObject.base</code> 存在，则 <code>pathObject.ext</code> 和 <code>pathObject.name</code> 会被忽略</li>
</ul>
<p>例如，在 POSIX 上：</p>
<pre><code class="lang-js">// 如果提供了 `dir`、`root` 和 `base`，则返回 `${dir}${path.sep}${base}`。
// `root` 会被忽略。
path.format({
  root: &apos;/ignored&apos;,
  dir: &apos;/home/user/dir&apos;,
  base: &apos;file.txt&apos;
});
// 返回: &apos;/home/user/dir/file.txt&apos;

// 如果没有指定 `dir`，则 `root` 会被使用。
// 如果只提供了 `root` 或 `dir` 等于 `root`，则平台的分隔符不会被包含。
// `ext` 会被忽略。
path.format({
  root: &apos;/&apos;,
  base: &apos;file.txt&apos;,
  ext: &apos;ignored&apos;
});
// 返回: &apos;/file.txt&apos;

// 如果没有指定 `base`，则 `name` + `ext` 会被使用。
path.format({
  root: &apos;/&apos;,
  name: &apos;file&apos;,
  ext: &apos;.txt&apos;
});
// 返回: &apos;/file.txt&apos;
</code></pre>
<p>在 Windows 上：</p>
<pre><code class="lang-js">path.format({
  dir: &apos;C:\\path\\dir&apos;,
  base: &apos;file.txt&apos;
});
// 返回: &apos;C:\\path\\dir\\file.txt&apos;
</code></pre>
<h2>path.isAbsolute(path)<span><a class="mark" href="#path_path_isabsolute_path" id="path_path_isabsolute_path">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.11.2</span>
</div><ul>
<li><code>path</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#Boolean_type" class="type">&lt;boolean&gt;</a></li>
</ul>
<p><code>path.isAbsolute()</code> 方法会判定 <code>path</code> 是否为一个绝对路径。</p>
<p>如果给定的 <code>path</code> 是一个长度为零的字符串，则返回 <code>false</code>。</p>
<p>例如，在 POSIX 上：</p>
<pre><code class="lang-js">path.isAbsolute(&apos;/foo/bar&apos;); // true
path.isAbsolute(&apos;/baz/..&apos;);  // true
path.isAbsolute(&apos;qux/&apos;);     // false
path.isAbsolute(&apos;.&apos;);        // false
</code></pre>
<p>在 Windows 上：</p>
<pre><code class="lang-js">path.isAbsolute(&apos;//server&apos;);    // true
path.isAbsolute(&apos;\\\\server&apos;);  // true
path.isAbsolute(&apos;C:/foo/..&apos;);   // true
path.isAbsolute(&apos;C:\\foo\\..&apos;); // true
path.isAbsolute(&apos;bar\\baz&apos;);    // false
path.isAbsolute(&apos;bar/baz&apos;);     // false
path.isAbsolute(&apos;.&apos;);           // false
</code></pre>
<p>如果 <code>path</code> 不是一个字符串，则抛出 <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a>。</p>
<h2>path.join([...paths])<span><a class="mark" href="#path_path_join_paths" id="path_path_join_paths">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.1.16</span>
</div><ul>
<li><code>...paths</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a> 一个路径片段的序列</li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p><code>path.join()</code> 方法使用平台特定的分隔符把全部给定的 <code>path</code> 片段连接到一起，并规范化生成的路径。</p>
<p>长度为零的 <code>path</code> 片段会被忽略。
如果连接后的路径字符串是一个长度为零的字符串，则返回 <code>&apos;.&apos;</code>，表示当前工作目录。</p>
<p>例子：</p>
<pre><code class="lang-js">path.join(&apos;/foo&apos;, &apos;bar&apos;, &apos;baz/asdf&apos;, &apos;quux&apos;, &apos;..&apos;);
// 返回: &apos;/foo/bar/baz/asdf&apos;

path.join(&apos;foo&apos;, {}, &apos;bar&apos;);
// 抛出 &apos;TypeError: Path must be a string. Received {}&apos;
</code></pre>
<p>如果任一路径片段不是一个字符串，则抛出 <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a>。</p>
<h2>path.normalize(path)<span><a class="mark" href="#path_path_normalize_path" id="path_path_normalize_path">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.1.23</span>
</div><ul>
<li><code>path</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p><code>path.normalize()</code> 方法会规范化给定的 <code>path</code>，并解析 <code>&apos;..&apos;</code> 和 <code>&apos;.&apos;</code> 片段。</p>
<p>当发现多个连续的路径分隔符时（如 POSIX 上的 <code>/</code> 与 Windows 上的 <code>\</code> 或 <code>/</code>），它们会被单个的路径分隔符（POSIX 上是 <code>/</code>，Windows 上是 <code>\</code>）替换。
末尾的多个分隔符会被保留。</p>
<p>如果 <code>path</code> 是一个长度为零的字符串，则返回 <code>&apos;.&apos;</code>，表示当前工作目录。</p>
<p>例如，在 POSIX 上：</p>
<pre><code class="lang-js">path.normalize(&apos;/foo/bar//baz/asdf/quux/..&apos;);
// 返回: &apos;/foo/bar/baz/asdf&apos;
</code></pre>
<p>在 Windows 上：</p>
<pre><code class="lang-js">path.normalize(&apos;C:\\temp\\\\foo\\bar\\..\\&apos;);
// 返回: &apos;C:\\temp\\foo\\&apos;
</code></pre>
<p>尽管Windows会识别多种文件路径分隔符，但是两种分隔符在Window上会被(<code>\</code>)分隔符取代：</p>
<pre><code class="lang-js">path.win32.normalize(&apos;C:////temp\\\\/\\/\\/foo/bar&apos;);
// Returns: &apos;C:\\temp\\foo\\bar&apos;
</code></pre>
<p>如果 <code>path</code> 不是一个字符串，则抛出 <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a>。</p>
<h2>path.parse(path)<span><a class="mark" href="#path_path_parse_path" id="path_path_parse_path">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.11.15</span>
</div><ul>
<li><code>path</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object" class="type">&lt;Object&gt;</a></li>
</ul>
<p><code>path.parse()</code> 方法返回一个对象，对象的属性表示 <code>path</code> 的元素。
尾部文件分隔符会被忽略，请看 <a href="#path_path_sep"><code>path.sep</code></a>.</p>
<p>返回的对象有以下属性：</p>
<ul>
<li><code>dir</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>root</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>base</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>name</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>ext</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p>例如，在 POSIX 上：</p>
<pre><code class="lang-js">path.parse(&apos;/home/user/dir/file.txt&apos;);
// 返回:
// { root: &apos;/&apos;,
//   dir: &apos;/home/user/dir&apos;,
//   base: &apos;file.txt&apos;,
//   ext: &apos;.txt&apos;,
//   name: &apos;file&apos; }
</code></pre>
<pre><code class="lang-text">┌─────────────────────┬────────────┐
│          dir        │    base    │
├──────┬              ├──────┬─────┤
│ root │              │ name │ ext │
&quot;  /    home/user/dir / file  .txt &quot;
└──────┴──────────────┴──────┴─────┘
(请无视以上字符串中的空格，它们只是为了布局)
</code></pre>
<p>在 Windows 上：</p>
<pre><code class="lang-js">path.parse(&apos;C:\\path\\dir\\file.txt&apos;);
// 返回:
// { root: &apos;C:\\&apos;,
//   dir: &apos;C:\\path\\dir&apos;,
//   base: &apos;file.txt&apos;,
//   ext: &apos;.txt&apos;,
//   name: &apos;file&apos; }
</code></pre>
<pre><code class="lang-text">┌─────────────────────┬────────────┐
│          dir        │    base    │
├──────┬              ├──────┬─────┤
│ root │              │ name │ ext │
&quot; C:\      path\dir   \ file  .txt &quot;
└──────┴──────────────┴──────┴─────┘
(请无视以上字符串中的空格，它们只是为了布局)
</code></pre>
<p>如果 <code>path</code> 不是一个字符串，则抛出 <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a>。</p>
<h2>path.posix<span><a class="mark" href="#path_path_posix" id="path_path_posix">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.11.15</span>
</div><ul>
<li>
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object" class="type">&lt;Object&gt;</a></li>
</ul>
<p><code>path.posix</code> 属性提供了 <code>path</code> 方法针对 POSIX 的实现。</p>
<h2>path.relative(from, to)<span><a class="mark" href="#path_path_relative_from_to" id="path_path_relative_from_to">#</a></span></h2>
<div class="api_metadata">
<details class="changelog"><summary>版本历史</summary>
<table>
<tbody><tr><th>版本</th><th>变更</th></tr>
<tr><td>v6.8.0</td>
<td><p>On Windows, the leading slashes for UNC paths are now included in the return value.</p>
</td></tr>
<tr><td>v0.5.0</td>
<td><p><span>新增于: v0.5.0</span></p>
</td></tr>
</tbody></table>
</details>
</div><ul>
<li><code>from</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li><code>to</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p><code>path.relative()</code> 方法返回从 <code>from</code> 到 <code>to</code> 的相对路径（基于当前工作目录）。
如果 <code>from</code> 和 <code>to</code> 各自解析到同一路径（调用 <code>path.resolve()</code>），则返回一个长度为零的字符串。</p>
<p>如果 <code>from</code> 或 <code>to</code> 传入了一个长度为零的字符串，则当前工作目录会被用于代替长度为零的字符串。</p>
<p>例如，在 POSIX 上：</p>
<pre><code class="lang-js">path.relative(&apos;/data/orandea/test/aaa&apos;, &apos;/data/orandea/impl/bbb&apos;);
// 返回: &apos;../../impl/bbb&apos;
</code></pre>
<p>在 Windows 上：</p>
<pre><code class="lang-js">path.relative(&apos;C:\\orandea\\test\\aaa&apos;, &apos;C:\\orandea\\impl\\bbb&apos;);
// 返回: &apos;..\\..\\impl\\bbb&apos;
</code></pre>
<p>如果 <code>from</code> 或 <code>to</code> 不是一个字符串，则抛出 <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a>。</p>
<h2>path.resolve([...paths])<span><a class="mark" href="#path_path_resolve_paths" id="path_path_resolve_paths">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.3.4</span>
</div><ul>
<li><code>...paths</code> 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a> 一个路径或路径片段的序列</li>
<li>返回: 
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p><code>path.resolve()</code> 方法会把一个路径或路径片段的序列解析为一个绝对路径。</p>
<p>给定的路径的序列是从右往左被处理的，后面每个 <code>path</code> 被依次解析，直到构造完成一个绝对路径。
例如，给定的路径片段的序列为：<code>/foo</code>、<code>/bar</code>、<code>baz</code>，则调用 <code>path.resolve(&apos;/foo&apos;, &apos;/bar&apos;, &apos;baz&apos;)</code> 会返回 <code>/bar/baz</code>。</p>
<p>如果处理完全部给定的 <code>path</code> 片段后还未生成一个绝对路径，则当前工作目录会被用上。</p>
<p>生成的路径是规范化后的，且末尾的斜杠会被删除，除非路径被解析为根目录。</p>
<p>长度为零的 <code>path</code> 片段会被忽略。</p>
<p>如果没有传入 <code>path</code> 片段，则 <code>path.resolve()</code> 会返回当前工作目录的绝对路径。</p>
<p>例子：</p>
<pre><code class="lang-js">path.resolve(&apos;/foo/bar&apos;, &apos;./baz&apos;);
// 返回: &apos;/foo/bar/baz&apos;

path.resolve(&apos;/foo/bar&apos;, &apos;/tmp/file/&apos;);
// 返回: &apos;/tmp/file&apos;

path.resolve(&apos;wwwroot&apos;, &apos;static_files/png/&apos;, &apos;../gif/image.gif&apos;);
// 如果当前工作目录为 /home/myself/node，
// 则返回 &apos;/home/myself/node/wwwroot/static_files/gif/image.gif&apos;
</code></pre>
<p>如果任何参数不是一个字符串，则抛出 <a href="errors.html#errors_class_typeerror"><code>TypeError</code></a>。</p>
<h2>path.sep<span><a class="mark" href="#path_path_sep" id="path_path_sep">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.7.9</span>
</div><ul>
<li>
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures#String_type" class="type">&lt;string&gt;</a></li>
</ul>
<p>提供了平台特定的路径片段分隔符：</p>
<ul>
<li>Windows 上是 <code>\</code></li>
<li>POSIX 上是 <code>/</code></li>
</ul>
<p>例如，在 POSIX 上：</p>
<pre><code class="lang-js">&apos;foo/bar/baz&apos;.split(path.sep);
// 返回: [&apos;foo&apos;, &apos;bar&apos;, &apos;baz&apos;]
</code></pre>
<p>在 Windows 上：</p>
<pre><code class="lang-js">&apos;foo\\bar\\baz&apos;.split(path.sep);
// 返回: [&apos;foo&apos;, &apos;bar&apos;, &apos;baz&apos;]
</code></pre>
<p>注意：在 Windows 上，斜杠字符（<code>/</code>）和反斜杠字符（<code>\</code>）都可作为路径分隔符；
但 <code>path</code> 的方法只添加反斜杠（<code>\</code>）。</p>
<h2>path.win32<span><a class="mark" href="#path_path_win32" id="path_path_win32">#</a></span></h2>
<div class="api_metadata">
<span>新增于: v0.11.15</span>
</div><ul>
<li>
            <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object" class="type">&lt;Object&gt;</a></li>
</ul>
<p><code>path.win32</code> 属性提供了 <code>path</code> 方法针对 Windows 的实现。</p>

      </div>
    </div>

    <div id="column2" class="interior">
      <div id="intro" class="interior">
        <a href="/" title="Go back to the home page">
          Node.js 中文文档 | Node.js 中文网
        </a>
      </div>
      
        <!-- [start-include:_toc.md] -->
<ul>
<li><a href="documentation.html">关于本文档</a></li>
<li><a href="synopsis.html">用法与例子</a></li>
</ul>
<div class="line"></div>

<ul>
<li><a href="assert.html">断言测试</a></li>
<li><a href="async_hooks.html">异步钩子（Async Hooks）</a></li>
<li><a href="buffer.html">缓存（Buffer）</a></li>
<li><a href="addons.html">C++ 插件</a></li>
<li><a href="n-api.html">C/C++ 插件 - N-API</a></li>
<li><a href="child_process.html">子进程</a></li>
<li><a href="cluster.html">集群（Cluster）</a></li>
<li><a href="cli.html">命令行参数</a></li>
<li><a href="console.html">控制台（Console）</a></li>
<li><a href="crypto.html">加密（Crypto）</a></li>
<li><a href="debugger.html">调试器</a></li>
<li><a href="deprecations.html">废弃的 API</a></li>
<li><a href="dns.html">DNS</a></li>
<li><a href="domain.html">域（Domain）</a></li>
<li><a href="esm.html">ECMAScript 模块</a></li>
<li><a href="errors.html">错误（Errors）</a></li>
<li><a href="events.html">事件（Events）</a></li>
<li><a href="fs.html">文件系统</a></li>
<li><a href="globals.html">全局对象（Globals）</a></li>
<li><a href="http.html">HTTP</a></li>
<li><a href="http2.html">HTTP/2</a></li>
<li><a href="https.html">HTTPS</a></li>
<li><a href="inspector.html">检查工具（Inspector）</a></li>
<li><a href="intl.html">国际化</a></li>
<li><a href="modules.html">模块（Modules）</a></li>
<li><a href="net.html">网络（Net）</a></li>
<li><a href="os.html">操作系统（OS）</a></li>
<li><a href="path.html">路径（Path）</a></li>
<li><a href="perf_hooks.html">性能钩子（Performance Hooks）</a></li>
<li><a href="process.html">进程</a></li>
<li><a href="punycode.html">Punycode</a></li>
<li><a href="querystring.html">查询字符串</a></li>
<li><a href="readline.html">逐行读取</a></li>
<li><a href="repl.html">交互式解释器（REPL）</a></li>
<li><a href="stream.html">流（Stream）</a></li>
<li><a href="string_decoder.html">字符串解码</a></li>
<li><a href="timers.html">定时器（Timers）</a></li>
<li><a href="tls.html">安全传输层（TLS/SSL）</a></li>
<li><a href="tracing.html">事件跟踪（Tracing）</a></li>
<li><a href="tty.html">TTY</a></li>
<li><a href="dgram.html">UDP / 数据报</a></li>
<li><a href="url.html">URL</a></li>
<li><a href="util.html">工具集</a></li>
<li><a href="v8.html">V8</a></li>
<li><a href="vm.html">虚拟机（VM）</a></li>
<li><a href="zlib.html">压缩（ZLIB）</a></li>
</ul>
<div class="line"></div>

<ul>
<li><a href="https://github.com/nodejs/node">GitHub 仓库和问题跟踪</a></li>
<li><a href="https://groups.google.com/group/nodejs">邮件列表</a></li>
</ul>
<!-- [end-include:_toc.md] -->

      
    </div>
  </div>
  <script src="assets/sh_main.js"></script>
  <script src="assets/sh_javascript.min.js"></script>
  <script>highlight(undefined, undefined, 'pre');</script>
</body>
</html>
